public class sequenceList<T> {
    final int maxSize = 10;     //顺序表中一维数组的初始长度
    private T[] listArray;      //存储元素的数组对象
    private int length;         //保存顺序表的当前长度
    public sequenceList(){      //构造一个空的线性表
        length = 0;
        listArray = (T[])new Object[maxSize];
    }
    public sequenceList(int n){
        if(n<=0){
            System.out.println("error");
            System.exit(1);
        }
        length = 0; //线性表初始化为0
        listArray = (T[])new Object[n];
    }
    //线性表表中插入一个新元素
    public boolean add(T obj,int pos){
        if (pos<1||pos>length+1){
            System.out.println("pos值不合法");
            return false;
        }
        if (length==listArray.length){
            T[] p = (T[]) (new Object[length*2]);
            for (int i = 0;i<length;i++){
                p[i] = listArray[i];
            }
            listArray = p;
        }
        for (int i = length;i > pos;i--){
            listArray[i] = listArray[i-1];
        }
        listArray[pos-1] = obj;
        length++;
        return true;
    }
    //删除线性表中的某个元素
    public T remove(int pos){
        if (isEmpty()){
            System.out.println("顺序表为空，无法执行删除操作");
            return null;
        }else{
            if (pos<1||pos>length){
                System.out.println("pos值不合法");
                return null;
            }
            T x = listArray[pos-1];
            for (int i =pos;i<=length;i++){
                listArray[i-1] = listArray[i];
            }
            length--;
            return x;
        }
    }
    //在线性表中查找一个元素
    public int find(T obj) {
        if (isEmpty()){
            System.out.println("顺序表为空");
            return -1;
        }else{
            for (int i = 0;i<length;i++){
                if (listArray[i].equals(obj)){
                    return i+1;
                }
            }
            return -1;
        }
    }
    //获取线性表中的一个元素
    public T value(int pos) {
        if (isEmpty()){
            System.out.println("顺序表为空");
            return null;
        }else {
            if (pos < 1||pos>length){
                System.out.println("值不合法");
                return null;
            }
            return listArray[pos-1];
        }
    }
    //更新线性表中的某个元素
    public boolean modify(T obj,int pos){
        if (isEmpty()){
            System.out.println("顺序表为空");
            return false;
        }else {
            if (pos<1||pos>length){
                System.out.println("error");
                return false;
            }
            listArray[pos-1]=obj;
            return true;
        }
    }
    //求线性表中数据元素的个数
    public int size(){
        return length;
    }
    //判空
    public boolean isEmpty(){
        return length==0;
    }
    //依次访问栈中的每个元素并输出
    public void nextOder(){
        for (int i=0;i<length;i++)
            System.out.println(listArray[i]);
    }
    //销毁一个存在对的线性表
    public void clear(){
        length=0;
    }
}
